<?

require_once("/var/www/AppResiduos2/config/BaseDatosPDO.php");
require_once("/var/www/AppResiduos2/lib/model/Constituyente.php");

class ConstituyenteDAO{


        var $conexion;

        public function  __construct() {
            try{
                $bd = new BaseDatosPDO("localhost", "phplogin", "root", "root");
                $this->conexion = $bd->conectar();
            } catch (PDOException $e){
                echo $e->getMessage();
            }
            $this->conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
            $this->conexion->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
        }

	/**
	Crea una nuevo registro en la tabla components en la bd
	@param Constituyente constituyente
	*/
	public function nuevoConstituyente($const){
            $query = $this->conexion->prepare("INSERT INTO components VALUES (?,?)");
            $params = array($const->id, $const->name);
            $result = $query->execute($params);
	}

	/**
	Modifica una un registro de la tabla components de la bd
	@param Constituyente constituyente
	*/
	public function modificarConstituyente($const){
            $query = $this->conexion->prepare('UPDATE components SET name = ?
                 WHERE id = ?');
            $params = array($const->name, $const->id);
            $result = $query->execute($params);
	}

	/**
	Elimina un registro de la tabla components de la bd
	@param Constituyente constituyente
	*/
	public function eliminarConstituyente($const){
            $query = $this->conexion->prepare('DELETE FROM components WHERE id = ?');
            $result = $query->execute(array($const->id));
	}

	/**
	Obtiene un registro de la tabla components de la bd
	*/
	public function obtenerConstituyente($id){
            $query = $this->conexion->prepare('SELECT * FROM components WHERE id = ?');
            $query->execute(array($id));
            $result = $query->fetchAll(PDO::FETCH_OBJ);
            return $result[0];
	}

        /**
         * Retorna un registro de la tabla components de la bd,
         * dado el nombre del constituyente quimico
         * @param String $name
         * @return Constituyente
         */
        public function obtenerConstituyentePorNombre($name){
            $query = $this->conexion->prepare('SELECT * FROM components WHERE name = ?');
            $query->execute(array($name));
            $result = $query->fetchAll(PDO::FETCH_OBJ);
            return $result;
	}

	/**
	Lista todos los registros de la tabla components de la bd
	*/
	public function listarConstituyentes(){
            $query = $this->conexion->prepare("SELECT * FROM components WHERE 1 ORDER BY name");
            $query->execute();
            $result = $query->fetchAll(PDO::FETCH_OBJ);
            return $result;
	}

}

//
//  Prueba1: Agregar un constituyente
//$c = new Constituyente();
//$c->id = "C1";
//$c->name = "zinc";
//$c2 = new Constituyente();
//$c2->id = "C2";
//$c2->name = "magnesio";
//$cDAO = new ConstituyenteDAO();
//$cDAO->nuevoConstituyente($c);
//$cDAO->nuevoConstituyente($c2);

// Prueba2: Modificar un constiutyente
//$c = new Constituyente();
//$c->id = "C1";
//$c->name = "zinco";
//$cDAO = new ConstituyenteDAO();
//$cDAO->modificarConstituyente($c);

//Prueba3: Eliminar un Constituyente
//$c = new Constituyente();
//$c->id = "C2";
//$cDAO = new ConstituyenteDAO();
//$cDAO->eliminarConstituyente($c);

//Prueba4: Obtener Constituyente
//$cDAO = new ConstituyenteDAO();
//print_r($cDAO->obtenerConstituyente("C1"));

//Prueba5: Obtener Constituyente por nombre
//$cDAO = new ConstituyenteDAO();
//print_r($cDAO->obtenerConstituyentePorNombre("zinco"));

//Prueba6: Listar Constituyente
//$cDAO = new ConstituyenteDAO();
//print_r($cDAO->listarConstituyentes());

?>
